package karaoke.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import karaoke.excepcion.DAOExcepcion;
import karaoke.modelo.Producto;
import karaoke.modelo.TipoProducto;

public class CancionDao extends BaseDAO {
	
	public Collection<Producto> buscarPorNombre(String nombre)
			throws DAOExcepcion {
		String query = "select p.*,tp.nombre as tipo from producto p " +
				"inner join tipoproducto tp on p.idtipoproducto = p.idtipoproducto where p.nombre like ?";
		Collection<Producto> lista = new ArrayList<Producto>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = karaoke.util.ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, "%" + nombre + "%");
			rs = stmt.executeQuery();
			while (rs.next()) {
				Producto producto = new Producto();
				producto.setIdproducto(rs.getInt("idproducto"));
				producto.setNombre(rs.getString("nombre"));
				producto.setPrecio(rs.getDouble("precio"));
				producto.setElog(rs.getBoolean("elog"));
				producto.setDisponible(rs.getBoolean("disponible"));		
				
				
				TipoProducto tipoproducto = new TipoProducto();
				tipoproducto.setIdtipoproducto(rs.getInt("idtipoproducto"));
				tipoproducto.setNombre(rs.getString("tipo"));
				
				
				producto.setIdtipoproducto(tipoproducto);
				lista.add(producto);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		System.out.println(lista.size());
		return lista;
	}
	
}
